// at89c55
#include <reg52.h>
/* 初始化程序应完成如下工作：
1、对TMOD赋值，以确定T0和T1的工作方式。
2、计算初值,并将其写入TH0、TL0或TH1、TL1。
3、使TR0或TR1置位，启动定时/计数器定时或计数。
4、中断方式时，则对IE赋值，开放中断*/
const int bit16 = 65536; // 16-bit 溢出值
const int osc = 11059200;

// time <= 65.536ms wait_time: 微秒 <= 65536, 计算16位计数器的初始值
void bit16_cal_init_value_small(int wait_time)
{
    TH0 = (bit16 - wait_time) /256;
    TL0 = (bit16 - wait_time) % 256;
}
void init_timer()
{
    TMOD = 0x01; // 16-bit timer
   // TH0 = bit16_cal_init_value(10)
    bit16_cal_init_value_small(65536);
    //TL0 = 0x00;
    TR0 = 1; // start timer
}
void main()
{
    int times = 0;
    init_timer();
    while(1)
    {
        if(TF0==1)
        {
            times+=1;
            TF0=0;
        }
    }
}